/*
 * ComponenteBasePersonalizado.java
 * Copyright 2010 Universidad Francisco de Paula Santander (UFPS).
 * Todos los Derechos Reservados.
 * Creado el 30/11/2010, 11:15:16 AM
 */

package com.ufps.cuatro.util.base;

/**
 * <i><b>ComponenteBasePersonalizado:</b></i>Esta Clase define los Componente Personalizados
 * utilizados para representar Tipos de Datos de uso Común utilizados en los Modelos Analizados.
 * 
 * @author Carlos A. Torres C. - Dolly E. Guerrero <https://code.google.com/p/tesis4dor/> 
 * @version 1.0 30/11/2010
 * @see ComponenteBase
 * @see ObjectBase
 */
public class ComponenteBasePersonalizado extends ComponenteBase{
    private static final long serialVersionUID = 3285714233747850335L;
    
    private static int serialComponenteBasePersonalizado;  
    private int idClaseComponenteBasePersonalizado;    
    
    /**
     * Indice que Identifica el Componente Generador Asociado.
     */
    protected String generador;
    /**
     * Indices que identifican los Componentes Generados Asociados.
     */
    protected String generados;
    /**
     * Cadena con los Tipos de Datos Soportados en formato reconocido
     * por la aplicación.
     */
    protected String soportados;     

    /**
     * Constructor por Defecto.
     * @param id Propiedad utilizada para identificar el indice dentro de los archivos de
     * propiedades.
     * @param generador Indice que Identifica el Componente Generador Asociado.
     * @param generados @DefinicionParametro
     * @param soportados @DefinicionParametro
     * @param alias @DefinicionParametro
     * @param tooltips @param inicializacion 
     * @DefinicionParametro
     */
    public ComponenteBasePersonalizado(int id, String generador, String generados, String soportados, String alias, String tooltips, boolean inicializacion, int modo) {
        super(id);
        this.generador = generador;
        this.generados = generados;
        this.soportados = soportados;
        this.strAlias = alias;
        this.strToolTips = tooltips;
        this.inicializacion = inicializacion;
        this.idClaseComponenteBasePersonalizado = ComponenteBasePersonalizado.serialComponenteBasePersonalizado++;
        this.modo = modo;
    }

    /**
     * Constructor por Defecto.
     * @param generador @DefinicionParametro
     * @param generados 
@DefinicionParametro
     * @param soportados @DefinicionParametro
     * @param alias @DefinicionParametro
     * @param inicializacion 
     * @param tooltips @DefinicionParametro
     */
    public ComponenteBasePersonalizado(String generador, String generados, String soportados, String alias, String tooltips, boolean inicializacion, int modo) {
        this.generador = generador;
        this.generados = generados;
        this.soportados = soportados;
        this.strAlias = alias;
        this.strToolTips = tooltips;
        this.inicializacion = inicializacion;
        this.idClaseComponenteBasePersonalizado = ComponenteBasePersonalizado.serialComponenteBasePersonalizado++;
        this.modo = modo;
    }       

    /**
     * Devuelve el Indice que Identifica el Componente Generador Asociado.
     * @return @DefinicionReturn
     */
    public String getGenerador() {
       try{
            return generador;
        }catch(java.lang.NullPointerException ex){}
       return "";
    }

    /**
     * Establece el Indice que Identifica el Componente Generador Asociado.
     * @param generador @DefinicionParametro
     */
    public void setGenerador(String generador) {
       try{
            this.generador = generador;
        }catch(java.lang.NullPointerException ex){}
       
    }

    /**
     * Devuelve los Indices que identifican los Componentes Generados Asociados.
     * @return @DefinicionReturn
     */
    public String getGenerados() {
       try{
            return generados;
        }catch(java.lang.NullPointerException ex){}
       return "";
    }

    /**
     * Establece los Indices que identifican los Componentes Generados Asociados.
     * @param generados @DefinicionParametro
     */
    public void setGenerados(String generados) {
        try{
            this.generados = generados;
        }catch(java.lang.NullPointerException ex){}
        
    }    

    /**
     * Devuelve la Cadena con los Tipos de Datos Soportados en formato reconocido
     * por la aplicación.
     * @return @DefinicionReturn
     */
    public String getSoportados() {
       try{
            return soportados;
        }catch(java.lang.NullPointerException ex){}
       return "";
    }

    /**
     * Establece la Cadena con los Tipos de Datos Soportados en formato reconocido
     * por la aplicación.
     * @param soportados @DefinicionParametro
     */
    public void setSoportados(String soportados) {
       try{
            this.soportados = soportados;
        }catch(java.lang.NullPointerException ex){}
       
    }    

    @Override
    public String toString() {
       try{ 
            return strAlias + String.valueOf(id);
        }catch(java.lang.NullPointerException ex){}
       return "";
    }
    
    @Override
    public int compareTo(Object o) {
       try{
            ComponenteBasePersonalizado obj = (ComponenteBasePersonalizado) o;
            if(this.idClaseComponenteBasePersonalizado > obj.idClaseComponenteBasePersonalizado) {
                return 1;
            }
            else if(this.idClaseComponenteBasePersonalizado < obj.idClaseComponenteBasePersonalizado) {
                return -1;
            }
            else {
                return 0;
            }
        }catch(java.lang.NullPointerException ex){}
       return 0;
    }   

}


